Browser with integrated privacy controls and dashboard for social network data

ABSTRACT

Particular embodiments comprise a method, by one or more computer systems, for accessing a structured document from an external website, wherein the structured document includes markup language containing instructions identifying social network data elements of a social networking system, processing the markup language in the structured document to locate the social network data elements, rendering the structured document based on the markup language, wherein the displayable web page includes one or more of the located social network data elements of the social networking system, and displaying one or more of the located social network data elements of the social networking system proximal to the rendered web page on a display.

TECHNICAL FIELD

The present disclosure generally relates to social networking systems,and more specifically relates to accessing social networking systems inconnection with third party websites.

BACKGROUND

A social network, in general, is a social structure made up of entities,such as individuals or organizations, that are connected by one or moretypes of interdependency or relationships, such as friendship, kinship,common interest, financial exchange, dislike, or relationships ofbeliefs, knowledge, or prestige. In more recent years, social networkshave taken advantage of the Internet. There are social-networkingsystems existing on the Internet in the form of social-networkingwebsites. A social networking system, such as a social networkingwebsite, enables its users to interact with it and with each otherthrough the system.

The social networking system may create and store a record, oftenreferred to as a user profile, in connection with the user. The userprofile may include a user's demographic information, communicationchannel information, and personal interests. The social networkingsystem may also create and store a record of a user's relationship withother users in the social networking system (e.g., social graph), aswell as provide services (e.g., wall-posts, photo-sharing, or instantmessaging) to facilitate social interaction between users in the socialnetworking system. The social networking system may also create andstore user preferences.

A social networking system may support application programminginterfaces and associated functionality that allows third-party systemsto access user profile data of its users. Such third party websites canuse the user profile data can use the identity and account of a user forpurposes of identifying users and maintaining their accounts at suchthird party websites. These third party websites may also access userprofile data in order to personalize or customize the user experience onthe site.

SUMMARY

The present disclosure generally relates to social networking systems,and more specifically relates to accessing social networking systems inconnection with third party websites.

In particular embodiments, a method comprising, by one or more computersystems, accessing a structured document from an external website,wherein the structured document includes markup language containinginstructions identifying social network data elements of a socialnetworking system, processing the markup language in the structureddocument to locate the social network data elements, rendering thestructured document based on the markup language, wherein thedisplayable web page includes one or more of the located social networkdata elements of the social networking system, and displaying one ormore of the located social network data elements of the socialnetworking system proximal to the rendered web page on a display.

These and other features, aspects, and advantages of the disclosure aredescribed in more detail below in the detailed description and inconjunction with the following figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example social network system.

FIG. 2 illustrates an example system.

FIG. 3 is a flow chart diagram that illustrates a first method.

FIG. 4 is a flow chart diagram that illustrates a second method.

FIG. 5a illustrates an example dashboard.

FIG. 5b illustrates a second example dashboard.

FIG. 6 illustrates an example computer system.

DESCRIPTION OF EXAMPLE EMBODIMENTS

The present disclosure is now described in detail with reference to afew embodiments thereof as illustrated in the accompanying drawings. Inthe following description, numerous specific details are set forth inorder to provide a thorough understanding of the present disclosure.However, the present disclosure may be practiced without some or all ofthese specific details. In other instances, well known process stepsand/or structures have not been described in detail in order not tounnecessarily obscure the present disclosure. In addition, while thedisclosure is described in conjunction with the particular embodiments,it should be understood that this description is not intended to limitthe disclosure to the described embodiments. To the contrary, thedescription is intended to cover alternatives, modifications, andequivalents as may be included within the spirit and scope of thedisclosure as defined by the appended claims.

Social Network Systems and Accessible User Profile Data

A social networking system, such as a social networking website, enablesits users to interact with it, and with each other, through the system.Typically, to become a registered user of a social networking system, anentity, either human or non-human, registers for an account with thesocial networking system. Thereafter, the registered user may login tothe social networking system via an account by providing, for example, acorrect login ID or username and password. As used herein, a “user” maybe an individual (human user), an entity (e.g., an enterprise, business,or third party application), or a group (e.g., of individuals orentities) that interacts or communicates with or over such a socialnetwork environment.

When a user registers for an account with a social networking system,the social networking system may create and store a record, oftenreferred to as a “user profile,” in connection with the user. The userprofile may include information provided by the user and informationgathered by various systems, including the social networking system,relating to activities or actions of the user. For example, the user mayprovide his name, profile picture, contact information, birth date,gender, marital status, family status, employment, education background,preferences, interests, and other demographical information to beincluded in his user profile. The user may identify other users of thesocial networking system that the user considers to be his friends. Alist of the user's friends or first degree contacts may be included inthe user's profile. Connections in social networking systems may be inboth directions or may be in just one direction. For example, if Bob andJoe are both users and connect with each another, Bob and Joe are eachconnections of the other. If, on the other hand, Bob wishes to connectto Sam to view Sam's posted content items, but Sam does not choose toconnect to Bob, a one-way connection may be formed where Sam is Bob'sconnection, but Bob is not Sam's connection. Some embodiments of asocial networking system allow the connection to be indirect via one ormore levels of connections (e.g., friends of friends). Connections maybe added explicitly by a user, for example, the user selecting aparticular other user to be a friend, or automatically created by thesocial networking system based on common characteristics of the users(e.g., users who are alumni of the same educational institution). Theuser may identify or bookmark websites or web pages he visits frequentlyand these websites or web pages may be included in the user's profile.

The user may provide information relating to various aspects of the user(such as contact information and interests) at the time the userregisters for an account or at a later time. The user may also updatehis or her profile information at any time. For example, when the usermoves, or changes a phone number, he may update his contact information.Additionally, the user's interests may change as time passes, and theuser may update his interests in his profile from time to time. A user'sactivities on the social networking system, such as frequency ofaccessing particular information on the system, may also provideinformation that may be included in the user's profile. Again, suchinformation may be updated from time to time to reflect the user'smost-recent activities. Still further, other users or so-called friendsor contacts of the user may also perform activities that affect or causeupdates to a user's profile. For example, a contact may add the user asa friend (or remove the user as a friend). A contact may also writemessages to the user's profile pages—typically known as wall-posts. Auser may also input status messages that get posted to the user'sprofile page.

A social network system may maintain social graph information, which cangenerally model the relationships among groups of individuals, and mayinclude relationships ranging from casual acquaintances to closefamilial bonds. A social network may be represented using a graphstructure. Each node of the graph corresponds to a member of the socialnetwork. Edges connecting two nodes represent a relationship between twousers. In addition, the degree of separation between any two nodes isdefined as the minimum number of hops required to traverse the graphfrom one node to the other. A degree of separation between two users canbe considered a measure of relatedness between the two users representedby the nodes in the graph.

A social networking system may support a variety of applications, suchas photo sharing, on-line calendars, search, events, and location-basedservices. For example, the social networking system may allow users topost photographs and other multimedia files to a user's profile, such asin a wall post or in a photo album, both of which may be accessible toother users of the social networking system. Social networking systemmay also allow users to configure events. For example, a first user mayconfigure an event with attributes including time and date of the event,location of the event and other users invited to the event. The invitedusers may receive invitations to the event and respond (such as byaccepting the invitation or declining it). Furthermore, socialnetworking system may allow users to maintain a personal calendar.Similarly to events, the calendar entries may include times, dates,locations and identities of other users.

The social networking system may also support a privacy model. A usermay or may not wish to share his information with other users orthird-party applications, or a user may wish to share his informationonly with specific users or third-party applications. A user may controlwhether his information is shared with other users or third-partyapplications through privacy settings associated with his user profile.For example, a user may select a privacy setting for each user datumassociated with the user and/or select settings that apply globally orto categories or types of user profile information. A privacy settingdefines, or identifies, the set of entities (e.g., other users,connections of the user, friends of friends, or third party application)that may have access to the user datum. The privacy setting may bespecified on various levels of granularity, such as by specifyingparticular entities in the social network (e.g., other users),predefined groups of the user's connections, a particular type ofconnections, all of the user's connections, all first-degree connectionsof the user's connections, the entire social network, or even the entireInternet (e.g., to make the posted content item index-able andsearchable on the Internet). A user may choose a default privacy settingfor all user data that is to be posted. Additionally, a user mayspecifically exclude certain entities from viewing a user datum or aparticular type of user data.

Social networking system may maintain a database of information relatingto geographic locations or places. Places may correspond to variousphysical locations, such as restaurants, bars, train stations, airportsand the like. Some places may correspond to larger regions thatthemselves contain places—such as a restaurant or a gate location in anairport. In one implementation, each place can be maintained as a hubnode in a social graph or other data structure maintained by the socialnetworking system, as described in U.S. patent application Ser. No.12/763,171, which is incorporated by reference herein for all purposes.Social networking system may allow users to access information regardingeach place using a client application (e.g., a browser) hosted by awired or wireless station, such as a laptop, desktop or mobile device.For example, social networking system may serve web pages (or otherstructured documents) to users that request information about a place.In addition to user profile and place information, the social networkingsystem may track or maintain other information about the user. Forexample, the social networking system may support geo-social networkingsystem functionality including one or more location-based services thatrecord the user's location. For example, users may access the geo-socialnetworking system using a special-purpose client application hosted by amobile device of the user (or a web- or network-based application usinga browser client). The client application may automatically accessGlobal Positioning System (GPS) or other geo-location functionssupported by the mobile device and report the user's current location tothe geo-social networking system. In addition, the client applicationmay support geo-social networking functionality that allows users tocheck-in at various locations and communicate this location to otherusers. A check-in to a given place may occur when a user is physicallylocated at a place and, using a mobile device, access the geo-socialnetworking system to register the user's presence at the place. A usermay select a place from a list of existing places near to the user'scurrent location or create a new place. The user may also providecomments in a text string when checking in to a given place. The usermay also identify one or more other users in connection with a check-in(such as friends of a user) and associate them with the check-in aswell. U.S. patent application Ser. No. 12/574,614, which is incorporatedby reference herein for all purposes, describes a system that allows afirst user to check-in other users at a given place. An entry includinga comment and a time stamp corresponding to the time the user checked inmay be displayed to other users. For example, a record of the user'scheck-in activity may be stored in a database. Social networking systemmay select one or more records associated with check-in activities ofusers at a given place and include such check-in activity in web pages(or other structured documents) that correspond to a given place. Forexample, social networking system may select the check-in activityassociated with the friends or other social contacts of a user thatrequests a page corresponding to a place. U.S. application Ser. No.12/858,718, incorporated by reference in its entirety for all purposes,describes an example geo-social networking system that can be used inconnection with various embodiments of the present invention. Thecheck-in activity may also be displayed on a user profile page and innews feeds provided to users of the social networking system. Stillfurther, third party systems may also access this information providedthe users' respective privacy configurations allow such access.

FIG. 1 illustrates an example social networking system. In particularembodiments, the social networking system may store user profile dataand social graph information in user profile database 101. In particularembodiments, the social networking system may store user event data andcalendar data in event database 102. In particular embodiments, thesocial networking system may store user privacy policy data in privacypolicy database 103. In particular embodiments, the social networkingsystem may store geographic and location data in location database 104.In particular embodiments, the social networking system may store mediadata (e.g., photos, or video clips) in media database 105. In particularembodiments, databases 101, 102, 103, 104, 105, and 110 may be operablyconnected to the social networking system's front end 120. In particularembodiments, the front end 120 may interact with client device 122through network cloud 121. Client device 122 is generally a computer orcomputing device including functionality for communicating over acomputer network (e.g., remotely). Client device 122 may be a desktopcomputer, laptop computer, personal digital assistant (PDA), in- orout-of-car navigation system, smart phone or other cellular or mobilephone, or mobile gaming device, among other suitable mobile computingdevices. Client device 122 may execute one or more client applications,such as a web browser (e.g., Microsoft Windows Internet Explorer,Mozilla Firefox, Apple Safari, Google Chrome, and Opera, etc.), toaccess and view content over a computer network. Front end 120 mayinclude web or HTTP server functionality, as well as otherfunctionality, to allow users to access the social networking system.Network cloud 121 generally represents a network or collection ofnetworks (such as the Internet or a corporate intranet, or a combinationof both) over which client devices 122 may access the social networksystem.

In particular embodiments, user profile database 101 may storecommunication channel information and an address book of a user. Theaddress book, in one implementation, may be a superset or a subset ofthe users of the social networking system that a user has established afriend or contact relationship. In particular embodiments, eventdatabase 102 may store event data for any number of particular eventsand the data associated with each event including the name of the event,the date and time of the event, the event location, particular users whoare invited to participate or who are participating in the event, andother user or participant's comments about the event. For example, auser may schedule an event through the social networking system, whichhas an associated link so that any invited user may participate, or anyuser if the event is open to any user. In particular embodiments,location database 104 may store geo-location data identifying areal-world geographic location of a user associated with a check-in. Forexample, a geographic location of an Internet connected computer can beidentified by the computer's IP address. For example, a geographiclocation of a cell phone equipped with Wi-Fi and GPS capabilities can beidentified by cell tower triangulation, Wi-Fi positioning, and/or GPSpositioning. In particular embodiments, location database 104 may storean information base of places, where each place includes a name, ageographic location and meta information.

In particular embodiments, privacy policy database 103 may store auser's privacy data for a user's settings for each user datum associatedwith the user and the user's settings for third party applications. Forexample, a user may have selected default privacy settings or a user mayhave specifically excluded certain entities from viewing a user datum orparticular type of user data, and all of that privacy data for all usersand friends of users may be stored in the privacy policy database 103.

In particular embodiments, a user's privacy data may comprise privacysettings associated with any aspect of the user profile, includingchanges that the user makes to the user profile, events, locations,media, activities, connections between one or more users, the news feedassociated with the user or any other action that the user takes in thesocial networking system. In particular embodiments, the privacysettings associated with the privacy policy database 103 may be providedand stored at different levels of granularity. In particularembodiments, for example, the information to be shared may be specificinformation, such as, work phone number, or a set of relatedinformation, such as, personal information including several pieces ofrelated information including profile photo, home phone number, andstatus. Alternatively, in particular embodiments, the privacy settingsassociated with the privacy policy database 103 may apply to all theinformation associated with the user in the social networking system.

In particular embodiments, the specification of the set of entities thatmay access particular user information may also be specified at variouslevels of granularity. In particular embodiments, the user may specifyany number of entities with which information may be shared. Inparticular embodiments, sets of entities with which information may beshared may include, for example, specified friends of the user, allfriends of the user, all friends of friends, all applications, and allexternal systems. In particular embodiments, for example, the user mayprovide a list of external systems that may access certain informationas well.

In particular embodiments, may specify a set of entities that includesexceptions that are not allowed to access the user's information. Inparticular embodiments, for example, the user of the social networkingsystem may allow all external systems to access the user's workinformation but specify a list of external systems that are not allowedto access the work information. In particular embodiments, the list ofexceptions that are not allowed to access certain information of theuser may be a “block list.” In particular embodiments, external systemsbelonging to a block list specified by a user of the social networkingsystem are blocked from accessing the information specified in theprivacy setting stored in privacy policy database 103. Particularembodiments contemplate various combinations of granularity of permittedaccess or denial of access depending on the type of user information andsets of entities with which information may be shared or accessed by thesets of entities, as specified by the user and stored in the privacypolicy database 103.

The social networking system may also include media sharingcapabilities. In particular embodiments, a user of the social networkingsystem may upload one or more media files to media database 105. Forexample, a user can upload a photo or a set of photos (often called aphoto album), or a video clip to media database 105 from a client device122 (e.g., a computer, or a camera phone). In particular embodiments,the one or more media files may contain metadata (often called “tags”)associated with each media file. For example, a photo shot by a digitalcamera may contain metadata relating to file size, resolution, timestamp, name of the camera maker, and/or location (e.g., GPS)coordinates.

FIG. 2 illustrates a particular embodiment of a system that includes aclient device 310, an external website 320, and a social networkingsystem 330. In particular embodiments, links 350 illustrate interactionsbetween client device 310 and external website 320, between clientdevice 310 and social networking system 330, and between externalwebsite 320 and social networking system 330.

In particular embodiments, client device 310 may host a browserapplication 312 or other application that processes structureddocuments. In particular embodiments, client device 310 may havereceived one or more structured documents from external website 320and/or social networking system 330. In particular embodiments, thestructured document may be a markup language document that containstext, links, scripts, and other attributes, such as applicationprogramming interface (API) calls identifying social network dataelements of a user profile maintained by social networking system 330.In particular embodiments, the structured document may containinstructions, for example, to specify how to render content for displayat client device 310. In particular embodiments, the structured documentmay contain instructions, for example, on how to access additionalinformation from social networking system 330. Alternatively, theinstructions within structured document may contain program logicinterpreted by a scripting engine 316 on the client device 310.

In particular embodiments, browser application 312 may process themarkup language in the structured document and render the structureddocument as a displayable web page. In particular embodiments, thedisplayable web page may include content of the external website 320 aswell as one or more of the located social network data elements of thesocial networking system 330. In particular embodiments, browserapplication 312 may display the rendered web page on a display of clientdevice 310. For example, a structured document hosted by externalwebsite 320 may contain an API call for a profile picture of a user. Thebrowser application 312, when processing the structured document, maytransmit a request to social networking system 330 to retrieve theuser's profile picture. The request may be an HTTP request and mayfurther include a browser cookie with information identifying the userof social networking system 330. The browser cookie may include stateand other information indicating the status of the user, for example,whether the user has recently logged in and/or authenticated to thesocial networking system 330. Still further, the structured documentprovided by external website 320 may include a segment (such as a div oriframe) that prompts the user to log in to social network system 330.For example, the structured document may include HTML code, Javascriptand other controls that cause the browser hosted by client device 310 toaccess social networking system 330 and render a login interface in asection of the displayed structured document.

In particular embodiments external website 320 and social networkingsystem 330 may have one or more users or members. In particularembodiments, users of external website 320 may also be users of socialnetworking system 330. In particular embodiments, a user may interactwith external website 320 and/or the social networking system 330 usingclient device 310. In particular embodiments, the social networkingsystem 330 may keep user profile information and the connections amongthe users.

In particular embodiments, the social networking system 330 may receiverequests from either the external website 320 or the client device 310to which the social networking system 330 may respond with the requestedinformation or with a subset of the requested information. Particularinteractions between client device 310, the external website 320, andthe social networking system 330 and information exchanged between thethree systems will be described later in detail. As discussed in moredetail below, implementations of the invention include augmentedclient-side functionality directed to informing the user as to whichsocial network data elements of the user the external website 320desires access and allows the user to control such access consistentwith his or her privacy configurations.

In particular embodiments, social networking system 330 may include aweb server 331, an authorization server 332, an action logger 333, anaction log 334, a connection database 335, and other databases 336, suchas the databases described in FIG. 1. In particular embodiments, socialnetworking system 330 may include additional, fewer, or differentmodules for various applications. Conventional components such asnetwork interfaces, security mechanisms, load balancers, failoverservers, management and network operations consoles, and the like arenot shown so as to not obscure the details of the system and will bedescribed later. In particular embodiments, the social networking system330 comprises a computing system that allows users to communicate orotherwise interact with each other and access content as describedherein. These and other functionalities of social networking system 330have also been described in detail above.

In particular embodiments, the social networking system 330 stores datadescribing one or more connections between different users in theconnection database 335. Particular embodiments of the connectiondatabase 335 may store connection information for users who haveindicated similar or common work experience, group memberships, hobbies,or educational history. In particular embodiments, the social networkingsystem 330 may also include user-defined connections between differentusers and those connections may be stored in connection database 335 aswell. Particular embodiments of connection database 335 may allow usersto specify their relationships with other users. In particularembodiments, for example, these user defined connections allows users togenerate relationships with other users that parallel the users'real-life relationships, such as friends, relatives, co-workers,partners, and so forth. In particular embodiments, users may select frompredefined types of connections, or define their own connection types,as needed.

In particular embodiments, the web server 331 links the socialnetworking system 330 via the network 340 to one or more client devices310. In particular embodiments, the web server 331 serves web pages, aswell as other web-related content, such as Java, Flash, XML, and soforth. Particular embodiments of the web server 331 may include a mailserver or other messaging functionality for receiving and routingmessages between the social networking system 331 and the client devices310. In particular embodiments, the messages may be instant messages,queued messages (e.g., email), text and SMS messages, or any othersuitable messaging technique.

In particular embodiments, the action logger 333 is capable of receivingcommunications from the web server 331 about user actions on and/or offthe social networking system 330. In particular embodiments, the actionlogger 333 populates the action log 334 with information about useractions in order to track them. More specifically, any action that aparticular user takes with respect to another user is associated witheach user's profile through information maintained in a database orother data repository, such as the action log 334. In particularembodiments, the actions taken by the members that are recorded in theaction log 334 may be actions taken by the members on the socialnetworking system 330 or actions taken by the members on the externalwebsite 320. In particular embodiments, the actions taken by the memberson an external website 320 are communicated to the web server 331 andthe web server 331 sends a request to the action logger 333 to recordthe actions in the action log 334. In particular embodiments, suchactions may include, for example, adding a connection to the other user,sending a message to the other user, reading a message from the otheruser, viewing content associated with the other user, attending an eventposted by another user, among others. Additionally, in particularembodiments, actions in connection with other objects may be directed atparticular users, and these actions may be associated with those usersas well.

In particular embodiments, when a user takes an action on the socialnetworking system 330, the action is recorded in an action log 334. Inparticular embodiments, the social networking system 330 maintains theaction log 334 as a database of entries. In particular embodiments, whenan action is taken on the social networking system 330, the socialnetworking system 330 adds an entry for that action to the action log334.

In particular embodiments, the authorization server 332 enforces theprivacy settings of the users of the social networking system, such asdescribed above with respect to privacy policy database 103. Inparticular embodiments, the privacy setting of a user determines howparticular information associated with a user may be shared. Inparticular embodiments, as described above, the privacy policy databasecomprises the privacy data for a user's settings for each user datumassociated with the user and the user's settings for third partyapplications, More specifically, the privacy data for a user's settingsmay specify particular information associated with a user and the entityor entities with whom the information may be shared. In particularembodiments, the entities with which information may be shared, mayinclude users, third party applications, external websites, or any otherentity that can potentially access the information. In particularembodiments, the information that may be shared by a user may compriseany aspect of the user profile, events, locations, media, activities, orthe news feed associated with the user.

FIGS. 3 and 4 illustrate example methods of displaying a dashboardidentifying social network data elements and integrating privacycontrols of a social networking system by logging a user accessing anexternal website into a social networking system. Particular embodimentsrelate to a plug-in software application (hereinafter referred to as“social enhancement application”) that operates or executes in thecontext of a browser (e.g., a web browser) or other application clientthat consumes structured documents. In other implementations, thefunctionality described herein can be incorporated directly into abrowser client application, as opposed to being a plug-in.

Typically, a web browser is used to access a webpage (or otherstructured document) for rendering at a client device. A web browserapplication is generally a computer program configured to run on auser's computing device (e.g., client device 122, 310) that enables theuser to connect to various server-hosted webpages available over anetwork. A non-exhaustive set of common web browsers include, by way ofexample, Internet Explorer™, Firefox™, Safari™, and Opera™. The webbrowser provides a standard viewing window that displays theinformational and visual content of the webpage or website (the term“website” and “webpage” may be used interchangeably herein whereappropriate). The URL of the website presently being rendered and viewedis displayed in the address box of the web browser GUI. The address boxenables a user to input an address (e.g., a URL) for a desired (target)webpage. The content of the website generally includes graphical images,text, and/or hyperlinks (e.g., comprising code segments that redirectthe web browser and user to another portion of the webpage or to asubsequent webpage altogether without requiring manual input of thesubsequent webpage's address). In various example embodiments, thewebpage can also include audio, video, and other types of web content.To facilitate navigation of the rendered page, the web browser GUI mayinclude scrolling bars or buttons. By clicking and/or dragging thesebars or buttons, a user may selectively view other portions of thewebpage, which do not entirely fit the immediately viewable areas of theGUI rendered by the web browser.

Typically, to render a webpage associated with a web application, theweb application and/or web browser at a client device requires access toone or more resources provided at one or more backend servers of anassociated website. A resource or webpage, which may itself includemultiple embedded resources, may include data records, such as contentplain textual information, or more complex digitally encoded multimediacontent, such as software programs or other code objects, graphics,images, audio signals, videos, and so forth. One prevalent markuplanguage for creating web pages is the Hypertext Markup Language (HTML).Other common web browser-supported languages and technologies includethe Extensible Markup Language (XML), the Extensible Hypertext MarkupLanguage (XHTML), JavaScript, Cascading Style Sheet (CSS), and,frequently, Java.

In particular embodiments, HTML may enable a page developer to create astructured document by denoting structural semantics for text and links,as well as images, web applications and other objects that can beembedded within the page. Generally, a web page may be delivered to aclient as a static document, however, through the use of web elementsembedded in the page, an interactive experience may be achieved with thepage or a sequence of pages. The web browser obtains the requiredresources (e.g., in response to executing JavaScripts or other callsembedded in a requested and received structured document and which mayinclude HTML or XML code and/or JavaScript scripts and/or contentincluding text, audio, and video) for rendering the webpage from one ormore servers and then constructs a browser representation of thewebpage. In particular embodiments, the browser processes the structureddocument and creates an in-memory representation of the document. Therepresentation may be a Document Object Model (DOM) representation ofthe webpage. The web browser then renders the page in the particularclient viewing window of the browser utilizing the DOM (or othersuitable) representation.

Automatic Log-in to Social Network Site

FIG. 4 illustrates an example method of integrating privacy controls ofa social networking system by logging in a user accessing an externalwebsite into a social networking system. A browser client and/or aplug-in to a browser client may implement the operations describedbelow. Similar to steps described later in FIG. 3, particularembodiments may receive a structured document from an external websiteidentifying social network data elements, as illustrated in step 510. Inparticular embodiments, the method may begin with accessing a targetstructured document by a web application or a web browser operating at aclient device. In particular embodiments, when a structured document isrequested having HTML or other markup language content, such as contentwithin a structured document, it is received by the web browser in orderto process the page so that the web browser may render the webpage.

Particular embodiments may process the markup language contained in thereceived structured document to locate a user login section, asillustrated in step 520. In particular embodiments, the markup languagein the structured document contains code segments for a user loginsection at social networking system 330. In particular embodiments, thecode segments may include tags for directly accessing user preferencesfor a user of a social networking system. In particular embodiments, forexample, the code segments for directly accessing user preferenceswithin a social networking system may be <fb:loginperms=“email”><′/fb.login>. In particular embodiments, the code segmentsmay be Javascript code for presenting a login interface to the user andconnecting the user to the social networking system. In particularembodiments, for example the Javascript code may create a socialnetworking system login button displayed on the rendered structureddocument that the user may click on to log into the social networkingsystem. In other particular embodiments, the received structureddocument may include tags or other API calls that cause the socialbrowser extension to identify a login and, optionally, create the HTMLcode that renders the login in the browser.

Particular embodiments may access user preferences associated with theuser relating to logins to determine whether a first user preferenceindicates an automatic login to the social networking system, asillustrated in step 530. In particular embodiments, the user preferencesthat indicate automatic login of the user to the social networkingsystem may be associated with the privacy settings and other informationstored in privacy policy database 103. In particular embodiments, one ormore aspects of the users privacy settings may be stored locally (and/orsynchronized with privacy policy database) at the browser application inthe client device to obviate the need for remote access.

In particular embodiments, as described above with respect to privacypolicy database 103, a user may store privacy settings and may specifyparticular entities, third party applications, or website domains thatmay or may not be allowed to access the user's information in the socialnetworking system. In particular embodiments, the user's privacysettings may grant full access to all third party entities, third partyapplications, or website domains. In particular embodiments, the user'sprivacy settings may restrict specific entities, third partyapplication, or website domains. In particular embodiments, the user'sprivacy settings may limit or grant access to particular types of socialnetwork data. Particular embodiments, for example, may grant full accessto a user's social network data to http://www.nytimes.com. Particularembodiments, for example, may also restrict access entirely to anotherwebsite, such as http://www.youtube.com, or particular embodiments maymerely restrict the types of social network data thathttp://www.youtube.com may access.

Particular embodiments may determine whether the user should beautomatically logged into the social networking system, as illustratedin step 540. In particular embodiments, based on the information storedfor a user in the privacy policy database 103, the social networkingsystem may or may not automatically log the user into the socialnetworking system. Where the user preferences indicate that the user maybe automatically logged in, particular embodiments may log the user intothe social networking system, as illustrated instep 560. In particularembodiments, if a user has a stored preference for automatic login in tothe social networking system, the user may then be automatically loggedin to the social networking system. In one implementation, to log theuser in, the browser client or plug-in may generate an on-click eventthat simulates a user click on a login button or other control. Such anaction may cause the browser client and/or plug-in to auto-fill theusername and password fields and simulate a mouse click on the loginbutton to transmit a login request to the social networking system. Thesocial networking system may authenticate the request, change the user'sstatus to indicate the login, and return a response to the browserclient.

In particular embodiments where there is no automatic login, the usermay be may be prompted to log in to the social networking system, asillustrated in step 550. In particular embodiments, in order to login tothe social networking system via an account, the user may provide acorrect login ID or username and a password for the social networkingsystem. In particular embodiments, once the user is logged into thesocial network system 330, social network data may be transmittedbetween external website 320 and social networking system 330. Even ifthe user is not logged into the social network system 330, if the userpreferences indicate that the user's social network data may be sharedwith external websites, in particular embodiments, social network datamay be transmitted between external website 320 and social networkingsystem 330.

FIG. 3 illustrates an example method of displaying a dashboardidentifying social network data elements that an external websitedesires to access from the social networking system 330. Particularembodiments may begin with a web application or a web browser operatingat a client device 310 accessing a target structured document hosted byan external website 320. Particular embodiments may receive thestructured document from an external website 320 identifying socialnetwork data elements, as illustrated in step 410.

As discussed above, when a structured document is requested having HTMLor other markup language content, such as content within a structureddocument, it is received by the web browser in order to process the pageso that the web browser may render the webpage. As further discussedabove, the structured document may include embedded API calls thataccess one or more social network data elements (e.g., profile pictures,contact lists, interests, hobbies, groups, affiliations, calendars, andthe like). In other implementations, the external website may access thesocial networking system directly to obtain one or more of the socialnetwork data elements and add it directly to the structured documentprior to transmission to the client device. As discussed herein, tosupport a transparent privacy and data security model, the structureddocument provided by the external website may include one or more tagsthat identify which social network data elements the external websitedesires to access by either or both of the mechanisms described above.As discussed below, the browser client may, during processing of thestructured document, access these tags and/or embedded API calls to thesocial networking system and provide indications to the user whichsocial network data elements the external website desires to access.

In particular embodiments, the structured document may include tagsidentifying social network data elements. In particular embodiments, thetags may be <meta> tags that are not displayed in the renderedstructured document by the browser application. In particularembodiments, social network data elements may comprise custom tags forperforming specialized tasks associated with the social networkingsystem. In particular embodiments, social network data elements maycomprise an entire library of custom tags whereby the interpretation ofthose specialized tags allows for specific information to be retrievedfrom the social networking system.

Particular embodiments may process the markup language in the structureddocument to locate the social network data elements, as illustrated instep 420. During a user session at the client, the web browserinterprets and displays the pages and associated resources received orretrieved from the website hosting the page, as well as, potentially,resources from other websites. In particular embodiments, social networkdata elements include tags for any available permissions, such as thedata, publishing, and page permissions listed in Appendix A.

Particular embodiments may render the structured document, wherein thedisplayable web page includes one or more of the located social networkdata elements, as illustrated in step 430. In particular embodiments,the web browser application constructs a corresponding DOMrepresentation of the underlying web content from which to render thewebpage. As the web browser parses the HTML, it constructs an internaldocument tree representing all of the elements to be displayed. Inparticular embodiments, the web browser application may access the DOM(or other suitable) representation of the currently rendered targetwebpage generated by the web browser.

Particular embodiments may display one or more of the located socialnetwork data elements proximal to the rendered web page on a display, asillustrated in step 440. FIGS. 5a and 5b illustrate an example browser600 that displays elements of external websites 610 and dashboard 620 a,620 b. In particular embodiments the displayed social network elementsmay be displayed as an overlay of the rendered web page, such as in FIG.5a , or as a sidebar to the rendered web page, such as in FIG. 5b . Inparticular embodiments, the browser client may implement this privacydashboard 620 a, 620 b as a sidebar, a toolbar, a pop-up window and thelike.

In particular embodiments, the browser client may include a dashboard620 a, 620 b displaying the social network data elements identified inthe structured document 610 currently loaded into the browser. Inparticular embodiments, for example, dashboard section 620 a, 620 b maydisplay elements of a privacy dashboard. In particular embodiments, theexternal website includes the custom tags in only a subset of thestructured documents it hosts. In particular embodiments, the browserclient maintains an association between the domain of external websiteand the custom tags embedded in at least one of the structured documentscorresponding to that domain. In particular embodiments, the browserclient may allow the user to toggle the display of the dashboard on andoff as desired. In particular embodiments, the browser client may allowthe user to toggle the social network data elements within the dashboardon and off as desired. Still further, in particular embodiments, thebrowser client may allow the user to toggle the permissions listed inAppendix A on and off to give the external specific access to socialnetwork data.

In particular embodiments, the dashboard may be implemented as anelement of the displayed structured document. In particular embodiments,the web browser application may modify or cause to be modified the DOMrepresentation of the target webpage (without necessarily modifying thenative HTML or other markup language code or content transmitted to thebrowser for rendering the target webpage (which is generally storedseparately)) to include or display the located social network dataelements. In particular embodiments, dashboard 620 a, 620 b may displaythe elements as a list of information retrieved from the socialnetworking system. In particular embodiments, information in dashboard620 a, 620 b may be information available from the user's profile thatis stored on the social networking system. In particular embodiments,for example, a profile image of the user may be retrieved and displayedon the client device on a web page of the external website.

In particular embodiments, information posted by the member on thesocial networking system, for example, the status of the user asindicated on the social networking website, may be obtained anddisplayed on the client device proximal to the displayed web page of theexternal website. In particular embodiments, the information retrievedfrom the social networking system may comprise information related toconnections of the user on the social networking system or any otheraspects of the social networking system or the social networking systemgraph. In particular embodiments, for example, the information retrievedmay include a list of friends or a list of friends of friends of theuser. Alternatively, the information retrieved may be a flag indicatingwhether another user is a friend of the user or not.

In particular embodiments, the social network data elements displayed indashboard 620 a, 620 b may have buttons where the user may select fordisplay any of one or more of the information displayed proximal to therendered web page of the external website. In particular embodiments,the social network data elements displayed may have color, font, statussymbols or any other type of indicator associated with the informationdisplayed proximal to the rendered web page of the external website.

In particular embodiments, where the user has no set of preferences forgranting permissions to external websites to the user's social networkdata in the social networking system, the user may be prompted to allowaspects of the dashboard to be displayed. In particular embodiments, theuser may instead be prompted to log into the social network system fromthe external website so that social network data can be exchangedbetween external website 320 and social networking system 330.

Particular embodiments may be implemented on one or more computersystems. FIG. 6 illustrates an example computer system 700 that may beused to implement a server. In particular embodiments, one or morecomputer systems 700 perform one or more steps of one or more methodsdescribed or illustrated herein. In particular embodiments, one or morecomputer systems 700 provide functionality described or illustratedherein. In particular embodiments, software running on one or morecomputer systems 700 performs one or more steps of one or more methodsdescribed or illustrated herein or provides functionality described orillustrated herein. Particular embodiments include one or more portionsof one or more computer systems 700.

This disclosure contemplates any suitable number of computer systems700. This disclosure contemplates computer system 700 taking anysuitable physical form. As example and not by way of limitation,computer system 700 may be an embedded computer system, a system-on-chip(SOC), a single-board computer system (SBC) (such as, for example, acomputer-on-module (COM) or system-on-module (SOM)), a desktop computersystem, a laptop or notebook computer system, an interactive kiosk, amainframe, a mesh of computer systems, a mobile telephone, a personaldigital assistant (PDA), a server, or a combination of two or more ofthese. Where appropriate, computer system 700 may include one or morecomputer systems 700; be unitary or distributed; span multiplelocations; span multiple machines; or reside in a cloud, which mayinclude one or more cloud components in one or more networks. Whereappropriate, one or more computer systems 700 may perform withoutsubstantial spatial or temporal limitation one or more steps of one ormore methods described or illustrated herein. As an example and not byway of limitation, one or more computer systems 700 may perform in realtime or in batch mode one or more steps of one or more methods describedor illustrated herein. One or more computer systems 700 may perform atdifferent times or at different locations one or more steps of one ormore methods described or illustrated herein, where appropriate.

In particular embodiments, computer system 700 includes a processor 702,memory 704, storage 706, an input/output (I/O) interface 708, acommunication interface 710, and a bus 712. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 702 includes hardware for executinginstructions, such as those making up a computer program. As an exampleand not by way of limitation, to execute instructions, processor 702 mayretrieve (or fetch) the instructions from an internal register, aninternal cache, memory 704, or storage 706; decode and execute them; andthen write one or more results to an internal register, an internalcache, memory 704, or storage 706. In particular embodiments, processor702 may include one or more internal caches for data, instructions, oraddresses.

In particular embodiments, memory 704 includes main memory for storinginstructions for processor 702 to execute or data for processor 702 tooperate on. As an example and not by way of limitation, computer system700 may load instructions from storage 706 or another source (such as,for example, another computer system 700) to memory 704. Processor 702may then load the instructions from memory 704 to an internal registeror internal cache. To execute the instructions, processor 702 mayretrieve the instructions from the internal register or internal cacheand decode them. During or after execution of the instructions,processor 702 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor702 may then write one or more of those results to memory 704. One ormore memory buses (which may each include an address bus and a data bus)may couple processor 702 to memory 704. Bus 712 may include one or morememory buses, as described below. In particular embodiments, one or morememory management units (MMUs) reside between processor 702 and memory704 and facilitate accesses to memory 704 requested by processor 702. Inparticular embodiments, memory 704 includes random access memory (RAM).This RAM may be volatile memory, where appropriate.

In particular embodiments, storage 706 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 706may include an HDD, a floppy disk drive, flash memory, an optical disc,a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB)drive or a combination of two or more of these. Storage 706 may includeremovable or non-removable (or fixed) media, where appropriate. Storage706 may be internal or external to computer system 700, whereappropriate. In particular embodiments, storage 706 is non-volatile,solid-state memory. In particular embodiments, storage 706 includesread-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these. Thisdisclosure contemplates mass storage 706 taking any suitable physicalform. Storage 706 may include one or more storage control unitsfacilitating communication between processor 702 and storage 706, whereappropriate. Where appropriate, storage 706 may include one or morestorages 706. Although this disclosure describes and illustratesparticular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface 708 includes hardware,software, or both providing one or more interfaces for communicationbetween computer system 700 and one or more I/O devices. Computer system700 may include one or more of these I/O devices, where appropriate. Oneor more of these I/O devices may enable communication between a personand computer system 700. As an example and not by way of limitation, anI/O device may include a keyboard, keypad, microphone, monitor, mouse,printer, scanner, speaker, still camera, stylus, tablet, touch screen,trackball, video camera, another suitable I/O device or a combination oftwo or more of these. An I/O device may include one or more sensors.This disclosure contemplates any suitable I/O devices and any suitableI/O interfaces 708 for them. Where appropriate, I/O interface 708 mayinclude one or more device or software drivers enabling processor 702 todrive one or more of these I/O devices. I/O interface 708 may includeone or more I/O interfaces 708, where appropriate. Although thisdisclosure describes and illustrates a particular I/O interface, thisdisclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 710 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 700 and one or more other computer systems 700 or one ormore networks. As an example and not by way of limitation, communicationinterface 710 may include a network interface controller (NIC) ornetwork adapter for communicating with an Ethernet or other wire-basednetwork or a wireless NIC (WNIC) or wireless adapter for communicatingwith a wireless network, such as a WI-FI network. This disclosurecontemplates any suitable network and any suitable communicationinterface 710 for it. As an example and not by way of limitation,computer system 700 may communicate with an ad hoc network, a personalarea network (PAN), a local area network (LAN), a wide area network(WAN), a metropolitan area network (MAN), or one or more portions of theInternet or a combination of two or more of these. One or more portionsof one or more of these networks may be wired or wireless. As anexample, computer system 700 may communicate with a wireless PAN (WPAN)(such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAXnetwork, a cellular telephone network (such as, for example, a GlobalSystem for Mobile Communications (GSM) network), or other suitablewireless network or a combination of two or more of these. Computersystem 700 may include any suitable communication interface 710 for anyof these networks, where appropriate. Communication interface 710 mayinclude one or more communication interfaces 710, where appropriate.Although this disclosure describes and illustrates a particularcommunication interface, this disclosure contemplates any suitablecommunication interface.

In particular embodiments, bus 712 includes hardware, software, or bothcoupling components of computer system 700 to each other. As an exampleand not by way of limitation, bus 712 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCI-X) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 712may include one or more buses 712, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, reference to a computer-readable storage medium encompasses oneor more non-transitory, tangible computer-readable storage mediapossessing structure. As an example and not by way of limitation, acomputer-readable storage medium may include a semiconductor-based orother integrated circuit (IC) (such, as for example, afield-programmable gate array (FPGA) or an application-specific IC(ASIC)), a hard disk, an HDD, a hybrid hard drive (HHD), an opticaldisc, an optical disc drive (ODD), a magneto-optical disc, amagneto-optical drive, a floppy disk, a floppy disk drive (FDD),magnetic tape, a holographic storage medium, a solid-state drive (SSD),a RAM-drive, a SECURE DIGITAL card, a SECURE DIGITAL drive, or anothersuitable computer-readable storage medium or a combination of two ormore of these, where appropriate. Herein, reference to acomputer-readable storage medium excludes any medium that is noteligible for patent protection under 35 U.S.C. §101. Herein, referenceto a computer-readable storage medium excludes transitory forms ofsignal transmission (such as a propagating electrical or electromagneticsignal per se) to the extent that they are not eligible for patentprotection under 35 U.S.C. §101. A computer-readable non-transitorystorage medium may be volatile, non-volatile, or a combination ofvolatile and non-volatile, where appropriate.

The present disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsherein that a person having ordinary skill in the art would comprehend.Similarly, where appropriate, the appended claims encompass all changes,substitutions, variations, alterations, and modifications to the exampleembodiments herein that a person having ordinary skill in the art wouldcomprehend.

APPENDIX A

Data, publishing, and page permissions:

User Permission Friends Permission Description user_about_mefriends_about_me Provides access to the “About Me” section of theprofile in the about property user_activities friends_activitiesProvides access to the user's list of activities as the activitiesconnection user_birthday friends_birthday Provides access to thebirthday with year as the birthday_date property user_education_historyfriends_education_history Provides access to education history as theeducation property user_events friends_events Provides access to thelist of events the user is attending as the events connectionuser_groups friends_groups Provides access to the list of groups theuser is a member of as the groups connection user_hometownfriends_hometown Provides access to the user's hometown in the hometownproperty user_interests friends_interests Provides access to the user'slist of interests as the interests connection user_likes friends_likesProvides access to the list of all of the pages the user has liked asthe likes connection user_location friends_location Provides access tothe user's current location as the location property user_notesfriends_notes Provides access to the user's notes as the notesconnection user_online_presence friends_online_presence Provides accessto the user's online/offline presence user_photo_video_tagsfriends_photo_video_tags Provides access to the photos the user has beentagged in as the photos connection user_photos friends_photos Providesaccess to the photos the user has uploaded user_relationshipsfriends_relationships Provides access to the user's family and personalrelationships and relationship status user_relationship_detailsfriends_relationship_details Provides access to the user's relationshippreferences user_religion_politics friends_religion_politics Providesaccess to the user's religious and political affiliations user_statusfriends_status Provides access to the user's most recent status messageuser_videos friends_videos Provides access to the videos the user hasuploaded user_website friends_website Provides access to the user's website URL user_work_history friends_work_history Provides access to workhistory as the work property email not available Provides access to theuser's primary email address in the email property. Do not spam users.Your use of email must comply both with Facebook policies and with theCAN-SPAM Act. read_friendlists manage_friendlists Provides access to anyfriend lists the user created. All user's friends are provided as partof basic data, this extended permission grants access to the lists offriends a user has created, and should only be requested if yourapplication utilizes lists of friends. read_insights not availableProvides read access to the Insights data for pages, applications, anddomains the user owns. read_mailbox not available Provides the abilityto read from a user's Facebook Inbox. read_requests not availableProvides read access to the user's friend requests read_stream notavailable Provides access to all the posts in the user's News Feed andenables your application to perform searches against the user's NewsFeed xmpp_login not available Provides applications that integrate withFacebook Chat the ability to log in users. ads_management not availableProvides the ability to manage ads and call the Facebook Ads API onbehalf of a user. user_checkins friends_checkins Provides read access tothe authorized user's check-ins or a friend's check-ins that the usercan see. Permission Description publish_stream Enables your applicationto post content, comments, and likes to a user's stream and to thestreams of the user's friends. With this permission, you can publishcontent to a user's feed at any time, without requiring offline_access.However, please note that Facebook recommends a user-initiated sharingmodel. create_event Enables your application to create and modify eventson the user's behalf rsvp_event Enables your application to RSVP toevents on the user's behalf sms Enables your application to sendmessages to the user and respond to messages from the user via textmessage offline_access Enables your application to perform authorizedrequests on behalf of the user at any time. By default, most accesstokens expire after a short time period to ensure applications only makerequests on behalf of the user when the are actively using theapplication. This permission makes the access token returned by ourOAuth endpoint long-lived. publish_checkins Enables your application toperform checkins on behalf of the user. manage_pages Enables yourapplication to retrieve access_tokens for pages the user administrates.The access tokens can be queried using the “accounts” connection in theGraph API. This permission is only compatible with the Graph API.

What is claimed is:
 1. A method comprising: accessing, by a clientdevice, a structured document from a website external to asocial-networking system, wherein the structured document comprisesmarkup language comprising instructions that identify one or moresocial-network data elements of a plurality of social-network dataelements of the social-networking system and, when processed, retrievethe identified social-network data elements stored on thesocial-networking system; determining each social-network data elementidentified by the instructions in the structured document; retrieving,for each social-network data element, a user preference stored on thesocial-networking system, each user preference describing whether aserver associated with the website is allowed to access thesocial-network data element; determining, based on each user preference,whether the website is allowed to access each social-network dataelement; responsive to determining that the website is not allowed toaccess at least one of the social-network data elements, providing auser interface element for display in association with a portion of thestructured document associated with the at least one of thesocial-network data elements; rendering, by the client device, thestructured document as a displayable web page based on the markuplanguage, wherein the displayable web page comprises one or more of thesocial-network data elements and a corresponding user preference elementfor each retrieved social-network data element; receiving, by the clientdevice, an input to the user interface element, the input indicating amodification of the user preference for the at least one of thesocial-network data elements; and transmitting the modification to thesocial-networking system to allow the website to access the at least oneof the social-network data elements.
 2. The method of claim 1, furthercomprising: if the user preference indicates a user preference forautomatic login, then logging a user into the social-networking system;or if the user preference does not indicate the user preference forautomatic login, then prompting the user to login into thesocial-networking system.
 3. The method of claim 1, further comprising:determining whether the user preference comprises privacy controls of auser of the social-networking system; if the user preference comprisesprivacy controls of the user of the social-networking system, thenrendering the structured document based on the markup language whereinthe displayable web page comprises one or more of the privacy controls;and displaying one or more of the privacy controls proximal to therendered web page on the display.
 4. The method of claim 1, wherein atleast one social-network data element comprises a login interface.
 5. Asystem comprising: one or more processors; and a memory coupled to theone or more processors comprising instructions executable by the one ormore processors, the one or more processors being operable whenexecuting the instructions to: access a structured document from awebsite external to a social-networking system, wherein the structureddocument comprises markup language comprising instructions that identifyone or more social-networking data elements of a plurality ofsocial-network data elements of the social networking system and, whenprocessed, retrieve the identified social-network data elements storedon the social-networking system; determining each social-network dataelement identified by the instructions in the structured document;retrieve, for each social-network data element, a user preference storedon the social-networking system, each user preference describing whethera server associated with the website is allowed to access thesocial-network data element; determine, based on each user preference,whether the website is allowed to access each social-network dataelement; responsive to determining that the website is not allowed toaccess at least one of the social-network data elements, providing auser interface element for display in association with a portion of thestructured document associated with at least one of the social-networkdata elements; render the structured document as a displayable web pagebased on the markup language, wherein the displayable web page comprisesone or more of the social-network data elements and a corresponding userpreference element for each retrieved social-network data element;receive an input to the user interface element, the input indicating amodification of the user preference for the at least one of thesocial-network data elements; and transmit the modification to thesocial-networking system to allow the website to access the at least oneof the social-network data elements.
 6. The system of claim 5, whereinthe one or more processors are further operable when executing theinstructions to: if the user preference indicates a user preference forautomatic login, then log a user into the social-networking system; orif the user preference does not indicate the user preference forautomatic login, then prompt the user to login into thesocial-networking system.
 7. The system of claim 5, wherein the one ormore processors are further operable when executing the instructions to:determine whether the user preference comprises privacy controls of auser of the social-networking system; if the user preference comprisesprivacy controls of the user of the social-networking system, thenrender the structured document based on the markup language wherein thedisplayable web page comprises one or more of the privacy controls; anddisplay one or more of the privacy controls proximal to the rendered webpage on the display.
 8. The system of claim 5, wherein at least onesocial-network data element comprises a login interface.
 9. One or morecomputer-readable non-transitory storage media embodying software thatis operable when executed to: access a structured document from awebsite external to a social-networking system, wherein the structureddocument comprises markup language comprising instructions that identifyone or more social-network data elements of a plurality ofsocial-network data elements of the social-networking system and, whenprocessed, retrieve the identified social-network data elements storedon the social-networking system; determine each social-network dataelement identified by the instructions in the structured document;retrieve, for each social-network data element, a user preferencesstored on the social-networking system, each user preference describingwhether a server associated with the website is allowed to access thesocial-network data element; determine, based on each user preference,whether the website is allowed to access each social-network dataelement; responsive to determining that the website is not allowed toaccess at least one of the social-network data elements, providing auser interface element for display in association with a portion of thestructured document associated with the at least one of thesocial-network data elements; render the structured document as adisplayable web page based on the markup language, wherein thedisplayable web page comprises one or more of the social-network dataelements and a corresponding user preference element for each retrievedsocial-network data element; receive an input to the user interfaceelement, the input indicating a modification of the user preference forthe at least one of the social-network data elements; and transmittingthe modifications to the social-networking system to allow the websiteto access the at least one of the social-network data elements.
 10. Theone or more computer-readable non-transitory storage media of claim 9,wherein the software is further operable when executed to: if the userpreference indicates a user preference for automatic login, then log auser into the social-networking system; or if the user preference doesnot indicate the user preference for automatic login, then prompt theuser to login into the social-networking system.
 11. The one or morecomputer-readable non-transitory storage media of claim 9, wherein thesoftware is further operable when executed to: determine whether theuser preference comprises privacy controls of a user of thesocial-networking system; if the user preference comprises privacycontrols of the user of the social-networking system, then render thestructured document based on the markup language wherein the displayableweb page comprises one or more of the privacy controls; and display oneor more of the privacy controls proximal to the rendered web page on thedisplay.
 12. The one or more computer-readable non-transitory storagemedia of claim 9, wherein at least one social-network data elementcomprises a login interface.